package com.qf.service.impl;

import com.qf.dao.AdminDao;
import com.qf.dao.impl.AdminDaoImpl;
import com.qf.pojo.Admin;
import com.qf.pojo.PageBean;
import com.qf.pojo.User;
import com.qf.service.AdminService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/4/15 15:10
 * 管理员业务接口实现
 */
public class AdminServiceImpl  implements AdminService {
    /**
     * 通过管理员名称获取管理员实体
     * @param username 管理员名称
     * @return 返回管理员实体
     */
    @Override
    public Admin getAdminByName(String username,String password) {
        try {
            //调用dao :管理员的数据访问接口
            AdminDao ad = new AdminDaoImpl() ;
            Admin admin = ad.selectAdmin( username) ;
            if(admin!=null){
                //判断密码是否一致
                if(admin.getPassword().equals(password)){
                    return  admin ;
                }
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }


    /**
     * 分页查询用户数据
     * @param currentPage 当前页码
     * @param pageSize    每页显示的条数
     * @return  返回分页实体,包含了分页列表数据,当前页码,每页显示的条数,总记录数
     */
    @Override
    public PageBean<User> getUserByPage(int currentPage,
                                        int pageSize) {
        try {
            //调用AdminDao:获取数据:分页列表数据
            AdminDao adminDao = new AdminDaoImpl() ;
            //获取分页用户数据
            List<User> list = adminDao.selectUserByPage(currentPage, pageSize);
            //获取总记录数
            int totalCount = adminDao.getTotalCount();
            if(list!=null || list.size()>0){
                return new PageBean<>(currentPage,pageSize,
                        totalCount,list);
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;
    }


    /*@Override
    public List<User> allUsers() {
        try {
            //调用AdminDao:数据库中获取用户列表
            AdminDao adminDao = new AdminDaoImpl() ;
            List<User> users = adminDao.selectAllUsers() ;

            if(users!=null || users.size()>0){
                //有数据
                //返回
                return users;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }*/


    /**
     * 添加前台用户
     * @param user 用户实体
     */
    @Override
    public void add(User user) {
        try {
            //访问管理员的数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            adminDao.insertUser(user) ;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    /**
     * 通过用户编号获取用户
     * @param uid 用户编号
     * @return 返回用户实体
     */
    @Override
    public User getUser(String uid) {
        try {
            //调用AdminDao,从数据库中获取数据
            AdminDao ad = new AdminDaoImpl() ;
            User user = ad.selectUserByUid(uid) ;
            if(user!=null){
                return  user ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 更新用户
     * @param user 用户实体
     */
    @Override
    public void updateUser(User user) {
        try {
            //调用AdminDao更新数据库
            AdminDao adminDao = new AdminDaoImpl() ;
            adminDao.updateUser(user) ;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

    /**
     * 业务层接口通过用户uid删除用户
     * @param uid 用户uid
     */
    @Override
    public void deleteUser(String uid) {
        try {
            //调用dao层,更新数据库
            AdminDao adminDao  = new AdminDaoImpl() ;
            if(uid!=null){
                adminDao.deleteUserByUid(uid) ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
